home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 051-075 / 054 / ispell / ispell.h < prev    next >
C/C++ Source or Header  |  1995-03-13  |  5KB  |  195 lines

  1. /* -*- Mode: Text -*- */
  2.  
  3. #ifdef unix
  4. #  define BITFIELDTYPE unsigned short
  5. #else
  6. #  define BITFIELDTYPE unsigned
  7. #endif
  8.  
  9. struct dent {
  10.     struct dent *next;
  11.     char *word;
  12.  
  13.     BITFIELDTYPE used : 1;
  14.  
  15. /* bit fields for all of the flags */
  16.     BITFIELDTYPE v_flag : 1;
  17.         /*
  18.             "V" flag:
  19.                 ...E --> ...IVE  as in CREATE --> CREATIVE
  20.                 if # .ne. E, ...# --> ...#IVE  as in PREVENT --> PREVENTIVE
  21.         */
  22.     BITFIELDTYPE n_flag : 1;
  23.         /*
  24.             "N" flag:
  25.                     ...E --> ...ION  as in CREATE --> CREATION
  26.                     ...Y --> ...ICATION  as in MULTIPLY --> MULTIPLICATION
  27.                     if # .ne. E or Y, ...# --> ...#EN  as in FALL --> FALLEN
  28.         */
  29.     BITFIELDTYPE x_flag : 1;
  30.         /*
  31.             "X" flag:
  32.                     ...E --> ...IONS  as in CREATE --> CREATIONS
  33.                     ...Y --> ...ICATIONS  as in MULTIPLY --> MULTIPLICATIONS
  34.                     if # .ne. E or Y, ...# --> ...#ENS  as in WEAK --> WEAKENS
  35.         */
  36.     BITFIELDTYPE h_flag : 1;
  37.         /*
  38.             "H" flag:
  39.                     ...Y --> ...IETH  as in TWENTY --> TWENTIETH
  40.                     if # .ne. Y, ...# --> ...#TH  as in HUNDRED --> HUNDREDTH
  41.         */
  42.     BITFIELDTYPE y_flag : 1;
  43.         /*
  44.             "Y" FLAG:
  45.                     ... --> ...LY  as in QUICK --> QUICKLY
  46.         */
  47.     BITFIELDTYPE g_flag : 1;
  48.         /*
  49.             "G" FLAG:
  50.                     ...E --> ...ING  as in FILE --> FILING
  51.                     if # .ne. E, ...# --> ...#ING  as in CROSS --> CROSSING
  52.         */
  53.     BITFIELDTYPE j_flag : 1;
  54.         /*
  55.             "J" FLAG"
  56.                     ...E --> ...INGS  as in FILE --> FILINGS
  57.                     if # .ne. E, ...# --> ...#INGS  as in CROSS --> CROSSINGS
  58.         */
  59.     BITFIELDTYPE d_flag : 1;
  60.         /*
  61.             "D" FLAG:
  62.                     ...E --> ...ED  as in CREATE --> CREATED
  63.                     if @ .ne. A, E, I, O, or U,
  64.                             ...@Y --> ...@IED  as in IMPLY --> IMPLIED
  65.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  66.                             ...@# --> ...@#ED  as in CROSS --> CROSSED
  67.                                             or CONVEY --> CONVEYED
  68.         */
  69.     BITFIELDTYPE t_flag : 1;
  70.         /*
  71.             "T" FLAG:
  72.                     ...E --> ...EST  as in LATE --> LATEST
  73.                     if @ .ne. A, E, I, O, or U,
  74.                             ...@Y --> ...@IEST  as in DIRTY --> DIRTIEST
  75.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  76.                             ...@# --> ...@#EST  as in SMALL --> SMALLEST
  77.                                             or GRAY --> GRAYEST
  78.         */
  79.     BITFIELDTYPE r_flag : 1;
  80.         /*
  81.             "R" FLAG:
  82.                     ...E --> ...ER  as in SKATE --> SKATER
  83.                     if @ .ne. A, E, I, O, or U,
  84.                             ...@Y --> ...@IER  as in MULTIPLY --> MULTIPLIER
  85.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  86.                             ...@# --> ...@#ER  as in BUILD --> BUILDER
  87.                                             or CONVEY --> CONVEYER
  88.         */
  89.     BITFIELDTYPE z_flag : 1;
  90.         /*
  91.             "Z FLAG:
  92.                     ...E --> ...ERS  as in SKATE --> SKATERS
  93.                     if @ .ne. A, E, I, O, or U,
  94.                             ...@Y --> ...@IERS  as in MULTIPLY --> MULTIPLIERS
  95.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  96.                             ...@# --> ...@#ERS  as in BUILD --> BUILDERS
  97.                                             or SLAY --> SLAYERS
  98.         */
  99.     BITFIELDTYPE s_flag : 1;
  100.         /*
  101.             "S" FLAG:
  102.                     if @ .ne. A, E, I, O, or U,
  103.                             ...@Y --> ...@IES  as in IMPLY --> IMPLIES
  104.                     if # .eq. S, X, Z, or H,
  105.                             ...# --> ...#ES  as in FIX --> FIXES
  106.                     if # .ne. S,X,Z,H, or Y, or (# = Y and @ = A, E, I, O, or U)
  107.                             ...# --> ...#S  as in BAT --> BATS
  108.                                             or CONVEY --> CONVEYS
  109.         */
  110.     BITFIELDTYPE p_flag : 1;
  111.         /*
  112.             "P" FLAG:
  113.                     if @ .ne. A, E, I, O, or U,
  114.                             ...@Y --> ...@INESS  as in CLOUDY --> CLOUDINESS
  115.                     if # .ne. Y, or @ = A, E, I, O, or U,
  116.                             ...@# --> ...@#NESS  as in LATE --> LATENESS
  117.                                             or GRAY --> GRAYNESS
  118.         */
  119.     BITFIELDTYPE m_flag : 1;
  120.         /*
  121.             "M" FLAG:
  122.                     ... --> ...'S  as in DOG --> DOG'S
  123.         */
  124.  
  125. };
  126.  
  127. #define WORDLEN 30
  128.  
  129. struct hashheader {
  130.     int magic;
  131.     int stringsize;
  132.     int tblsize;
  133. };
  134.  
  135. #define MAGIC 1
  136.  
  137.     
  138. /*
  139.  * termcap variables
  140.  */
  141. extern char *tgetstr();
  142. extern char PC;    /* padding character */
  143. extern char *BC;    /* backspace if not ^H */
  144. extern char *UP;    /* Upline (cursor up) */
  145. extern char *cd;    /* clear to end of display */
  146. extern char *ce;    /* clear to end of line */
  147. extern char *cl;    /* clear display */
  148. extern char *cm;    /* cursor movement */
  149. extern char *dc;    /* delete character */
  150. extern char *dl;    /* delete line */
  151. extern char *dm;    /* delete mode */
  152. extern char *ed;    /* exit delete mode */
  153. extern char *ei;    /* exit insert mode */
  154. extern char *ho;    /* home */
  155. extern char *ic;    /* insert character */
  156. extern char *il;    /* insert line */
  157. extern char *im;    /* insert mode */
  158. extern char *ip;    /* insert padding */
  159. extern char *nd;    /* non-destructive space */
  160. extern char *vb;    /* visible bell */
  161. extern char *so;    /* standout */
  162. extern char *se;    /* standout end */
  163. extern int bs;
  164. extern int li;        /* lines */
  165. extern int co;        /* columns */
  166.  
  167. extern char termcap[];
  168. extern char termstr[];    /* for string values */
  169. extern char *termptr;
  170.  
  171. extern char rootword[];
  172. extern struct dent *lastdent;
  173.  
  174. extern char *hashstrings;
  175.  
  176. extern int aflag;
  177. extern int lflag;
  178.  
  179. struct node {
  180.     struct node *left;
  181.     struct node *right;
  182.     char *word;
  183.     int keep;
  184. };
  185.  
  186. extern int erasechar;
  187. extern int killchar;
  188.  
  189. extern char tempfile[];
  190.  
  191. #ifdef AMIGA
  192. #  define index strchr
  193. #  define sleep(a) Delay(a*50)    /* Come on Lattice, it's so easy... */
  194. #endif
  195.